home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / bbs / mfm_111b.zip / PUSHPOP.PAS < prev    next >
Pascal/Delphi Source File  |  1992-01-07  |  5KB  |  163 lines

  1. {========================================================================}
  2. Procedure PushRecord(Var TempEntry : ListPtr);
  3.   Begin
  4.     If (CurrentEntry^.PrevEntry <> NIL) Or (CurrentEntry^.NextEntry <> NIL) Then
  5.     Begin
  6.       If CurrentEntry^.FileName <> 'FILES.BBS' Then
  7.       Begin
  8.         If CurrentEntry^.TypeOfRecord In [Orphan,FileRecord] Then Dec(NumberOfFiles);
  9.         SizeOfFiles := SizeOfFiles-CurrentEntry^.FileSize;
  10.       End;
  11.       Altered := True;
  12.       OldEntry := CurrentEntry;
  13.       If CurrentEntry^.PrevEntry = NIL Then
  14.       Begin
  15.         CurrentEntry^.NextEntry^.PrevEntry := NIL;
  16.         CurrentEntry := CurrentEntry^.NextEntry;
  17.         TopEntry := CurrentEntry;
  18.         FirstEntry := CurrentEntry;
  19.       End
  20.       Else
  21.       Begin
  22.         If CurrentEntry^.NextEntry = NIL Then
  23.         Begin
  24.           CurrentEntry^.PrevEntry^.NextEntry := NIL;
  25.           CurrentEntry := CurrentEntry^.PrevEntry;
  26.           LastEntry := CurrentEntry;
  27.           If TopEntry^.PrevEntry <> NIL Then
  28.           Begin
  29.             TopEntry := TopEntry^.PrevEntry;
  30.           End
  31.           Else
  32.           Begin
  33.             Dec(Row);
  34.           End;
  35.         End
  36.         Else
  37.         Begin
  38.           CurrentEntry^.PrevEntry^.NextEntry := CurrentEntry^.NextEntry;
  39.           CurrentEntry^.NextEntry^.PrevEntry := CurrentEntry^.PrevEntry;
  40.           CurrentEntry := CurrentEntry^.NextEntry;
  41.           If TopEntry = OldEntry Then TopEntry := CurrentEntry;
  42.         End;
  43.       End;
  44.       If TempEntry = NIL Then
  45.       Begin
  46.         TempEntry := OldEntry;
  47.         TempEntry^.PrevEntry := TempEntry;
  48.         TempEntry^.NextEntry := TempEntry;
  49.       End
  50.       Else
  51.       Begin
  52.         If TempEntry^.PrevEntry = TempEntry Then
  53.         Begin
  54.           OldEntry^.PrevEntry := TempEntry;
  55.           OldEntry^.NextEntry := TempEntry;
  56.           TempEntry^.PrevEntry := OldEntry;
  57.           TempEntry^.NextEntry := OldEntry;
  58.           TempEntry := OldEntry;
  59.         End
  60.         Else
  61.         Begin
  62.           OldEntry^.PrevEntry := TempEntry;
  63.           OldEntry^.NextEntry := TempEntry^.NextEntry;
  64.           TempEntry^.NextEntry^.PrevEntry := OldEntry;
  65.           TempEntry^.NextEntry := OldEntry;
  66.           TempEntry := OldEntry;
  67.         End;
  68.       End;
  69.       Dec(NumberOfEntries);
  70.       DisplayScreen;
  71.     End;
  72.   End;
  73. {========================================================================}
  74. Procedure PopRecord(Var TempEntry : ListPtr; BeforeOrAfter : Char);
  75.   Begin
  76.     If TempEntry <> NIL Then
  77.     Begin
  78.       If TempEntry^.FileName <> 'FILES.BBS' Then
  79.       Begin
  80.         If TempEntry^.TypeOfRecord In [Orphan,FileRecord] Then Inc(NumberOfFiles);
  81.         SizeOfFiles := SizeOfFiles+TempEntry^.FileSize;
  82.       End;
  83.       OldEntry := TempEntry;
  84.       If TempEntry^.PrevEntry = TempEntry Then
  85.       Begin
  86.         TempEntry := NIL;
  87.       End
  88.       Else
  89.       Begin
  90.         TempEntry^.PrevEntry^.NextEntry := TempEntry^.NextEntry;
  91.         TempEntry^.NextEntry^.PrevEntry := TempEntry^.PrevEntry;
  92.         TempEntry := TempEntry^.PrevEntry;
  93.       End;
  94.       If BeforeOrAfter = 'B' Then
  95.       Begin
  96.         If CurrentEntry^.PrevEntry = NIL Then
  97.         Begin
  98.           OldEntry^.PrevEntry := CurrentEntry^.PrevEntry;
  99.           OldEntry^.NextEntry := CurrentEntry;
  100.           CurrentEntry^.PrevEntry := OldEntry;
  101.           CurrentEntry := OldEntry;
  102.           TopEntry := CurrentEntry;
  103.           FirstEntry := CurrentEntry;
  104.         End
  105.         Else
  106.         Begin
  107.           OldEntry^.PrevEntry := CurrentEntry^.PrevEntry;
  108.           OldEntry^.NextEntry := CurrentEntry;
  109.           CurrentEntry^.PrevEntry^.NextEntry := OldEntry;
  110.           CurrentEntry^.PrevEntry := OldEntry;
  111.           CurrentEntry := OldEntry;
  112.         End;
  113.       End
  114.       Else
  115.       Begin
  116.         If CurrentEntry^.NextEntry = NIL Then
  117.         Begin
  118.           OldEntry^.NextEntry := CurrentEntry^.NextEntry;
  119.           OldEntry^.PrevEntry := CurrentEntry;
  120.           CurrentEntry^.NextEntry := OldEntry;
  121.         End
  122.         Else
  123.         Begin
  124.           OldEntry^.NextEntry := CurrentEntry^.NextEntry;
  125.           OldEntry^.PrevEntry := CurrentEntry;
  126.           CurrentEntry^.NextEntry^.PrevEntry := OldEntry;
  127.           CurrentEntry^.NextEntry := OldEntry;
  128.         End;
  129.       End;
  130.       Inc(NumberOfEntries);
  131.       DisplayScreen;
  132.     End;
  133.   End;
  134. {========================================================================}
  135. Procedure ShowStack(Var TempEntry : ListPtr);
  136.   Begin
  137.     If TempEntry <> NIL Then
  138.     Begin
  139.       NextPrintEntry := TempEntry;
  140.       DisplayRecord(25);
  141.       AnsiGotoXY(24,80);
  142.     End;
  143.   End;
  144. {========================================================================}
  145. Procedure StackPrev(Var TempEntry : ListPtr);
  146.   Begin
  147.     If TempEntry <> NIL Then
  148.     Begin
  149.       TempEntry := TempEntry^.PrevEntry;
  150.       ShowStack(TempEntry);
  151.     End;
  152.   End;
  153. {========================================================================}
  154. Procedure StackNext(Var TempEntry : ListPtr);
  155.   Begin
  156.     If TempEntry <> NIL Then
  157.     Begin
  158.       TempEntry := TempEntry^.NextEntry;
  159.       ShowStack(TempEntry);
  160.     End;
  161.   End;
  162. {========================================================================}
  163.